const joi = require("joi");

// 获取文章列表-表单校验规则
exports.getArticleList_schema = {
    query:{
        id:joi.string().min(0).max(36).error(new Error("ID必须是长度在1~32之间的字符串")),
        label:joi.string().min(0).max(150).error(new Error("标签必须是长度在0~150之间的字符串")),
        type:joi.string().min(0).max(150).error(new Error("类别必须是长度在1~150之间的字符串")),
        endTime: joi.number().min(0).error(new Error("结束时间必须为时间戳")),
        startTime: joi.number().min(0).error(new Error("开始时间必须为时间戳")),
        isDraft:joi.number().min(0).max(1).error(new Error("是否为草稿文章，0为发布1为草稿")),
        articleTitle: joi.string().min(0).max(150).error(new Error("文章标题必须是长度在1~150之间的字符串")),
        pageNum : joi.number().min(1).max(1000).default(1).error(new Error("pageNum必须为1~1000的数值")),
        pageSize : joi.number().min(1).max(50).default(10).error(new Error("pageSize必须为1~50的数值"))
    }
};

// 添加文章-表单校验规则
exports.addArticle_schema = {
    body:{
        label:joi.string().min(0).max(150).error(new Error("标签必须是长度在0~150之间的字符串")),
        type:joi.string().min(1).max(150).required().error(new Error("类别必须是长度在1~150之间的字符串")),
        isDraft:joi.number().min(0).max(1).required().error(new Error("是否为草稿文章，0为发布1为草稿")),
        articleBrief:joi.string().min(0).max(300).error(new Error("文章简介必须是长度在1~300之间的字符串")),
        articleTitle: joi.string().min(1).max(150).required().error(new Error("文章标题必须是长度在1~150之间的字符串")),
        content: joi.string().min(1).max(Number.MAX_SAFE_INTEGER).required().error(new Error("文章内容必须是长度在1~"+Number.MAX_SAFE_INTEGER+"之间的字符串"))
    }
};

// 修改文章-表单校验规则
exports.updateArticle_schema = {
    body:{
        id:joi.string().min(1).max(36).required().error(new Error("ID必须是长度在1~32之间的字符串")),
        label:joi.string().min(0).max(150).error(new Error("标签必须是长度在0~150之间的字符串")),
        type:joi.string().min(1).max(150).error(new Error("类别必须是长度在1~150之间的字符串")),
        articleBrief:joi.string().min(1).max(300).error(new Error("文章简介必须是长度在1~300之间的字符串")),
        isDraft:joi.number().min(0).max(1).error(new Error("是否为草稿文章，0为发布1为草稿")),
        articleTitle: joi.string().min(1).max(150).error(new Error("文章标题必须是长度在1~150之间的字符串")),
        status: joi.number().min(0).max(1).error(new Error("状态只能为1或0")),
        content: joi.string().min(1).max(Number.MAX_SAFE_INTEGER).required().error(new Error("文章内容必须是长度在1~"+Number.MAX_SAFE_INTEGER+"之间的字符串"))
    }
};

// 删除文章-表单校验规则
exports.delArticle_schema = {
    body:{
        id:joi.string().min(1).max(36).required().error(new Error("ID必须是长度在1~32之间的字符串"))
    }
};

// 新增类别-表单验证规则
exports.add_type_schema = {
    body:{
        typeName: joi.string().min(1).max(20).required().error(new Error("类别名必须是长度在1~20之间的字符串")),
        annotation: joi.string().min(1).max(100).error(new Error("备注必须是长度在1~100之间的字符串"))
    }
}

// 修改类别-表单验证规则
exports.update_type_schema = {
    body:{
        id:joi.string().min(1).max(36).required().error(new Error("ID必须是长度在1~32之间的字符串")),
        typeName: joi.string().min(1).max(20).error(new Error("类别名必须是长度在1~20之间的字符串")),
        annotation: joi.string().min(1).max(100).error(new Error("备注必须是长度在1~100之间的字符串")),
        status: joi.number().min(0).max(1).error(new Error("状态只能为1或0")),
    }
}

// 删除类别-表单验证规则
exports.del_type_schema = {
    body:{
        id:joi.string().min(1).max(36).required().error(new Error("ID必须是长度在1~32之间的字符串"))
    }
}

// 新增标签-表单验证规则
exports.add_label_schema = {
    body:{
        labelName: joi.string().min(1).max(50).required().error(new Error("标签名必须是长度在1~50之间的字符串")),
        belongsType: joi.string().min(1).max(20).required().error(new Error("所属类别名必须是长度在1~20之间的字符串")),
        annotation: joi.string().min(1).max(100).error(new Error("备注必须是长度在1~100之间的字符串"))
    }
}

// 修改标签-表单验证规则
exports.update_label_schema = {
    body:{
        id:joi.string().min(1).max(36).required().error(new Error("ID必须是长度在1~32之间的字符串")),
        labelName: joi.string().min(1).max(20).error(new Error("类别名必须是长度在1~20之间的字符串")),
        annotation: joi.string().min(1).max(100).error(new Error("备注必须是长度在1~100之间的字符串")),
        belongsType: joi.string().min(1).max(20).required().error(new Error("所属类别名必须是长度在1~20之间的字符串")),
        status: joi.number().min(0).max(1).error(new Error("状态只能为1或0")),
    }
}

// 删除标签-表单验证规则
exports.del_label_schema = {
    body:{
        id:joi.string().min(1).max(36).required().error(new Error("ID必须是长度在1~32之间的字符串"))
    }
}

// 获取标签列表-表单验证规则
exports.get_labels_schema = {
    query:{
        pageNum:joi.number().min(1).max(1000).default(1).error(new Error("pageNum必须为1~1000的数值")),
        pageSize:joi.number().min(1).max(50).default(10).error(new Error("pageSize必须为1~50的数值")),
        labelName:joi.string().min(1).max(150).error(new Error("labelName必须是长度在1~150之间的字符串")),
        belongType:joi.string().min(1).max(150).error(new Error("belongType必须是长度在1~150之间的字符串")),
        status:joi.number().min(0).max(1).error(new Error("状态只能为1或0"))
    }
}

// 获取类型列表-表单验证规则
exports.get_types_schema = {
    query:{
        pageNum:joi.number().min(1).max(1000).default(1).error(new Error("pageNum必须为1~1000的数值")),
        pageSize:joi.number().min(1).max(50).default(10).error(new Error("pageSize必须为1~50的数值")),
        typeName:joi.string().min(1).max(150).error(new Error("typeName必须是长度在1~150之间的字符串")),
        status:joi.number().min(0).max(1).error(new Error("状态只能为1或0"))
    }
}